适用于版本0.10.1。
以下为Spark SQL操作。
1 Spark建表
只有SparkSQL需要显式建表。使用自定义程序时自动创建不存在的表。
(1) 选项
Parameter Name | Description | (Optional/Required) : Default Value |
---|---|---|
primaryKey | The primary key names of the table, multiple fields separated by commas. | (Optional) : id |
type | The type of table to create (read more). cow = COPY-ON-WRITE, mor = MERGE-ON-READ. |
(Optional) : cow |
preCombineField | The Pre-Combine field of the table. | (Optional) : ts |
(2) 表类型
1 | -- create a non-primary key table |
(3) 主键
1 | -- create a managed cow table |
(4) 预聚合字段
1 | -- create an external mor table |
(5) 分区表
1 | create table if not exists hudi_table_p0 ( |
(6) 创建外部表
使用location指定路径,否则认为是managed table,两者的区别详见https://sparkbyexamples.com/apache-hive/difference-between-hive-internal-tables-and-external-tables/。
1 | create table h_p1 using hudi |
(7) CTAS
CTAS采用bulk_insert写入。
1 | -- 非分区cow表 |
(8) Hudi配置
建表时可以设置表范围的选项,后期可通过set命令更改。
1 | -- 模板 |
2 变更表
(1) 语法
1 | -- Alter table name |
(2) 示例
1 | alter table h0 rename to h0_1; |
(3) Hudi配置
可以通过set serdeproperties设置写入配置。
1 | alter table h3 set serdeproperties (hoodie.keep.max.commits = '10') |
(4) Set命令
设置会话内配置。
1 | set hoodie.insert.shuffle.parallelism = 100; |
3 Flink
(1) 建表
1 | CREATE TABLE hudi_table2( |
(2) 变更表
1 | alter table h0 rename to h0_1; |